import { Poll, Vmp } from '@/pages/create/createContent/blocks/vmp/interface'
import requestMeeting, { request } from '@/plugins/axios'
import { UserEntity } from './interface'
export interface FontEntity {
	/** 字体颜色 （0-小 1-中 2-大） */
	font_color?: string
	/** 字体大小  */
	font_size?: number
	/** 字体位置  （0-左上角 1-左下角 2-右上角 3-右下角 4-底部中间）*/
	position?: number
}
export interface PollEntity {
	/**id*/
	id: string
	/**
       {t('轮询模式 1，6，8是不带音频，3，7，9带音频，管理方：10不带，11带')}
    1-{t('视频轮询  是否带音频不勾选')};
    3-{t('音视频轮询 是否带音频勾选')};
    6-{t('轮询视频：只给回传通道 是否带音频不勾选')};
    7-{t('轮询发言人：只给回传通道 是否带音频勾选')};
    8-{t('轮询视频：给回传通道和本地广播 是否带音频不勾选')};
    9-{t('轮询发言人：给回传通道和本地广播 是否带音频勾选')};
    10-{t('主席视频轮询 会议轮询是否是轮询到发言人 不勾选')};
    11-{t('主席音视频轮询; 会议轮询是否是轮询到发言人 勾选')}
       */
	mode: number
	/** 预案名称 */
	name: string
	/** 轮询间隔时间(秒) */
	keep_time: number
	/** 轮询次数，0无限次轮询 */
	num: number
	/** 轮询成员列表 */
	members: UserEntity[]
	/** 当前轮询到的超元 */
	cur_poll_mt?: UserEntity
	/**轮询到的终端的位置*/
	poll_index?: number
	/**轮询状态0 空闲 1轮询中 2暂停*/
	state?: 0 | 1 | 2
}
export type VmpMemberEntity = {
	/** 跟随类型 1-会控指定；2-发言人跟随；3-管理方跟随；4-会议轮询跟随；6-单通道轮询；7-内容共享跟随 */
	member_type: number
	chn_idx: number
	/** 单通道轮询成员独有 */
	poll?: PollEntity
	mt_id?: string
	account?: string
	account_type?: 2 | 1 | 6 | 4 | 5 | 7 | 8
	name?: string
	portrait?: string
	conf_e164?: string
	bitrate?: number
	mt_key?: string
	/** 终端类型 1-普通终端; 3-电话终端; */
	mt_type?: number
	online?: 0 | 1
	e164?: string
	mt_ip?: string
	stream?: 0 | 1
	mute?: 0 | 1
	video_src?: 0 | 1
}
export interface VmpEntity {
	/** 画面合成模式
	 * 1-定制画面合成;
	 * 2-自动画面合成;
	 * 3-自动画面合成批量轮询(预留);
	 * 4-定制画面合成批量轮询; */
	mode: number
	/** 预案名称 */
	name: string
	/** 预案id */
	id: string
	/** 画面合成风格 0-自动画面合成 其他 */
	layout: number
	/** 显示别名 */
	show_mt_name: 0 | 1
	/** 识别声音来源 */
	voice_hint: 0 | 1
	/** 广播 */
	broadcast: 0 | 1
	/** 自动画面合成n-1模式 */
	except_self: 0 | 1
	/** 字体信息 */
	mt_name_style?: FontEntity
	/** 画面合成成员信息 */
	members?: VmpMemberEntity[]
	/** 轮询信息 */
	poll?: PollEntity
	/** 状态(cometd推送中包含) 0-未开启; 1-正在进行 */
	state?: 0 | 1
}

/** 获取画面合成预案列表 */
export const fetchGetVmpPlanList = async (preKey: string, isTemplete: boolean) =>
	requestMeeting<
		{
			layout: number
			id: string
			mode: number
			name: string
		}[]
	>({
		url: !isTemplete ? `/meetings/${preKey}/prevmps?count=0` : `/personal_templates/${preKey}/prevmps?count=0`,
		method: 'get',
	}).then((res) => res)

/**获取预案详情数据 */
export const fetchGetVmpPlan = async (preKey: string, isTemplete: boolean, id: string) =>
	request<VmpEntity>({
		url: !isTemplete ? `/meetings/${preKey}/prevmps/${id}` : `/personal_templates/${preKey}/prevmps/${id}`,
		method: 'get',
	}).then((res) => res)
/**删除预案 */
export const fetchDeleteVmpPlan = async (preKey: string, isTemplete: boolean, id: string) =>
	request<VmpEntity>({
		url: !isTemplete ? `/meetings/${preKey}/prevmps/${id}` : `/personal_templates/${preKey}/prevmps/${id}`,
		method: 'DELETE',
	}).then((res) => res)
/**更新预案 */
export const fetchEditVmpPlan = async (preKey: string, isTemplete: boolean, id: string, params: Vmp) =>
	request<VmpEntity>({
		url: !isTemplete ? `/meetings/${preKey}/prevmps/${id}` : `/personal_templates/${preKey}/prevmps/${id}`,
		method: 'post',
		data: params,
	}).then((res) => res)
/**新增预案 */
export const fetchSaveVmpPlan = async (preKey: string, isTemplete: boolean, params: Vmp) =>
	request<VmpEntity>({
		url: !isTemplete ? `/meetings/${preKey}/prevmps` : `/personal_templates/${preKey}/prevmps`,
		method: 'post',
		data: params,
	}).then((res) => res)
/** 获取轮询预案列表 */
export const fetchGetPollPlanList = async (preKey: string, isTemplete: boolean) =>
	requestMeeting<
		{
			id: string
			name: string
		}[]
	>({
		url: `${isTemplete ? '/personal_templates' : '/meetings'}/${preKey}/prepolls?count=0`,
		method: 'GET',
	}).then((res) => res)
export const fetchGetPollPlanDetail = async (preKey: string, isTemplete: boolean, id: string) =>
	request<Poll>({
		url: !isTemplete ? `/meetings/${preKey}/prepolls/${id}` : `/personal_templates/${preKey}/prepolls/${id}`,
		method: 'GET',
	}).then((res) => res)
